Instrucțiunea SQL INSERT INTO SELECT copiază datele dintr-un tabel și le inserează într-un alt tabel.
Instrucțiunea INSERT INTO SELECT necesită ca tipurile de date din tabelele sursă și țintă să se potrivească.
Copiază toate coloanele dintr-un tabel în altul:
INSERT INTO table2
SELECT *
FROM table1
WHERE condition
Copiază doar câteva coloane dintr-un tabel în altul:
INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition
În acest tutorial vom folosi celebrul exemplu de bază de date „Northwind”.
Mai jos este o mostră din tabelul „Customers” („Clienți”):
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 5021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 5023 | Mexico |
4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
Și eșantionul din tabelul „Suppliers” („Furnizori”):
SupplierID | SupplierName | ContactName | Address | City | PostalCode | Country | Phone |
---|---|---|---|---|---|---|---|
1 | Exotic Liquid | Charlotte Cooper | 49 Gilbert St. | Londona | EC1 4SD | UK | (171) 555-2222 |
2 | New Orleans Cajun Delights | Shelley Burke | P.O. Box 78934 | New Orleans | 70117 | USA | (100) 555-4822 |
3 | Grandma Kelly's Homestead | Regina Murphy | 707 Oxford Rd. | Ann Arbor | 48104 | USA | (313) 555-5735 |
4 | Tokyo Traders | Yoshi Nagase | 9-8 Sekimai Musashino-shi | Tokyo | 100 | Japan | (03) 3555-5011 |
5 | Cooperativa de Quesos 'Las Cabras' | Antonio del Valle Saavedra | Calle del Rosal 4 | Oviedo | 33007 | Spain | (98) 598 76 54 |
Următoarea interogare SQL copie „Suppliers” („Furnizori”) în „Customers” („Clienți”) (coloanele care nu sunt populate cu date vor conține NULL):
INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country
FROM Suppliers
O altă versiune a interogării SQL copie datele din tabelul „Furnizori” în „Clienți” (completează toate coloanele):
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
SELECT SupplierName, ContactName, Address, City, PostalCode, Country
FROM Suppliers
Următoarea instrucțiune SQL copie numai furnizorii germani în tabelul Customers:
INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country
FROM Suppliers
WHERE Country = 'Germany'